/**
 ******************************************************************************
 * @file           : bsp_mpu6050.h
 * @brief          : MPU6050 Six-Axis Sensor Driver Header File (STM32F4xx)
 ******************************************************************************
 * @attention
 *
 * MPU6050六轴传感器驱动头文件
 * 3轴加速度计 + 3轴陀螺仪
 *
 ******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __BSP_MPU6050_H
#define __BSP_MPU6050_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include "./Devices/MPU6050/bsp_mpu6050_config.h"

/* Exported types ------------------------------------------------------------*/

/**
 * @brief MPU6050数据结构体
 */
typedef struct
{
    int16_t accel_x;        /*!< X轴加速度 */
    int16_t accel_y;        /*!< Y轴加速度 */
    int16_t accel_z;        /*!< Z轴加速度 */
    int16_t gyro_x;         /*!< X轴角速度 */
    int16_t gyro_y;         /*!< Y轴角速度 */
    int16_t gyro_z;         /*!< Z轴角速度 */
    int16_t temperature;    /*!< 温度 */
} MPU6050_Data_t;

/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/

/* 初始化 */
uint8_t mpu6050_init(void);
void mpu6050_deinit(void);

/* 读取数据 */
uint8_t mpu6050_read_data(MPU6050_Data_t *data);
uint8_t mpu6050_read_accel(int16_t *x, int16_t *y, int16_t *z);
uint8_t mpu6050_read_gyro(int16_t *x, int16_t *y, int16_t *z);
uint8_t mpu6050_read_temp(int16_t *temp);

/* 配置 */
uint8_t mpu6050_set_accel_range(uint8_t range);
uint8_t mpu6050_set_gyro_range(uint8_t range);

#ifdef __cplusplus
}
#endif

#endif /* __BSP_MPU6050_H */
